#ifndef CHOIXDSLISTE_H
#define CHOIXDSLISTE_H

#include "BaseUI.h"

#include "StatusCode.h"

class QVBoxLayout;
class QSlider;
class QLabel;
class QGroupBox;

/**
 * Cette classe permet de choisir un élément d'une liste de
 * noms. L'élément couramment sélectionné apparaît sur la fenêtre, et
 * une barre de défilement permet de modifier ce choix.
 *
 * A proprement parler, on ne récupère qu'un nombre et non la chaîne
 * de caractère sélectionnée.
 *
 * Est utilisé lors de la sélection d'une Classe ou d'une Race.
 *
 * @author Johan "Solo" Luisier
 */
class ChoixDsListe : public BaseUI
{
  Q_OBJECT
 public:
  ChoixDsListe(const std::string& titre, std::string *liste,
	       const unsigned int& nbr, QWidget* parent = 0);
  ~ChoixDsListe();
  StatusCode demanderChoix();
 protected:
  /**
   * Pointeur sur le premier élément de la liste passée lors de la
   * construction.
   */
  std::string *Texte;
  /**
   * Nombre d'éléments de la liste (càd nombre de choix disponibles).
   */
  unsigned int Nbr;
  /**
   * Barre de défilement, permet de choisir l'élément voulu.
   */
  QSlider *slider;
  /**
   * Affichage du choix courant.
   */
  QLabel *label;
  /**
   * Réalise l'affichage groupé de l'élément sélectionnée et de la
   * barre de défilement.
   */
  QGroupBox *group;
  /**
   * Choix courant.
   */
  int selection;
 private:
  private slots:
  void changerValeur(const int& val);
};

#endif // CHOIXDSLISTE_H
